#include "Flag.h"
#include "tpslsismico.h"
#include "flagdescriptor.h"

TpSLsismico::TpSLsismico() :
    Customizable(false)
{
    m_intflag = TpSLsismico::NONE;
	m_value = -1;
    m_set = false;
}

TpSLsismico::TpSLsismico(const double& pvr)
{
	setFlagValue(pvr);
}

TpSLsismico::TpSLsismico(const TpSLsismico& sls)
{
    setCustom(sls.isCustom());
	m_intflag = sls.m_intflag;
	m_set = sls.m_set;
	m_value = sls.m_value;
}

TpSLsismico& TpSLsismico::operator=(const TpSLsismico& sls)
{
    setCustom(sls.isCustom());
    m_intflag = sls.m_intflag;
	m_value = sls.m_value;
    m_set = sls.m_set;
    return *this;
}

TpSLsismico::TpSLsismico(const int& tpsls)
{
    setFlag(tpsls);
}

void  TpSLsismico::setFlag(const int& TpSL)
{
    switch (TpSL)
    {
    case TpSLsismico::NONE:
        m_intflag=TpSLsismico::NONE;
		m_value = -1;
        m_set = false; setCustom(false);
        break;
    case TpSLsismico::SLO:
        m_intflag=TpSLsismico::SLO;
		m_value = 81;
        m_set = true; setCustom(false);
        break;
    case TpSLsismico::SLD:
        m_intflag=TpSLsismico::SLD;
		m_value = 63;
        m_set = true; setCustom(false);
        break;
    case TpSLsismico::SLV:
        m_intflag=TpSLsismico::SLV;
		m_value = 10;
        m_set = true; setCustom(false);
        break;
    case TpSLsismico::SLC:
        m_intflag=TpSLsismico::SLC;
		m_value = 5;
        m_set = true; setCustom(false);
        break;
    }
}

bool  TpSLsismico::setFlag(const string& str)
{
    if (str.compare("NONE")==0)
    {
        m_intflag = TpSLsismico::NONE;
		m_value = -1;
        m_set = false; setCustom(false);
    }
    else if (str.compare("SLO")==0)
    {
        m_intflag = TpSLsismico::SLO;
		m_value = 81;
        m_set = true; setCustom(false);
    }
    else if (str.compare("SLD")==0)
    {
        m_intflag = TpSLsismico::SLD;
		m_value = 63;
        m_set = true; setCustom(false);
    }
    else if (str.compare("SLV")==0)
    {
        m_intflag = TpSLsismico::SLV;
		m_value = 10;
        m_set = true; setCustom(false);
    }
    else if (str.compare("SLC")==0)
    {
        m_intflag = TpSLsismico::SLC;
		m_value = 5;
        m_set = true; setCustom(false);
    }
    else
    {
        return(false);
    }
    return(true);
}

string	TpSLsismico::getFlagStr(void) const
{
    switch (m_intflag)
    {
    case TpSLsismico::NONE:
        return("---");
    case TpSLsismico::SLO:
        return("SLO");
    case TpSLsismico::SLD:
        return("SLD");
    case TpSLsismico::SLV:
        return("SLV");
    case TpSLsismico::SLC:
        return("SLC");
    }
    return("NONE");
}

int TpSLsismico::setFlagValue(const double& pvr)
{
    setCustom(true);
	m_value = pvr;
    m_intflag = NONE;
    m_set = true;
    return 1;
}

string TpSLsismico::getFlagDescription( ExaTextFormat format ) const
{
    return FlagDescriptor::getFlagDescription( *this, format );;
}



